printjob: Clarify array ownership in gtk_print_job_set_page_ranges()
authorKjell Ahlstedt <kjell.ahlstedt@bredband.net>
Fri, 24 Mar 2017 15:41:47 +0000 (16:41 +0100)
committerKjell Ahlstedt <kjell.ahlstedt@bredband.net>
Fri, 24 Mar 2017 15:41:47 +0000 (16:41 +0100)
Add a documentation annotation saying that set_page_ranges transfers
ownership of the GtkPageRange array.
Add a g_free() call to fix a memory leak when set_page_ranges is
used repeatedly.

https://bugzilla.gnome.org/show_bug.cgi?id=780234

gtk/gtkprintjob.c

index 571d2b05728e9dfcb5a7b7b308619466fb732003..e74fdc01dc98bfdedadaa9edbe0d26cd69924e45 100644 (file)
@@ -781,7 +781,7 @@ gtk_print_job_get_page_ranges (GtkPrintJob *job,
 /**
  * gtk_print_job_set_page_ranges:
  * @job: a #GtkPrintJob
- * @ranges: (array length=n_ranges): pointer to an array of
+ * @ranges: (array length=n_ranges) (transfer full): pointer to an array of
  *    #GtkPageRange structs
  * @n_ranges: the length of the @ranges array
  *
@@ -794,6 +794,7 @@ gtk_print_job_set_page_ranges (GtkPrintJob  *job,
                                GtkPageRange *ranges,
                                gint          n_ranges)
 {
+  g_free (job->priv->page_ranges);
   job->priv->page_ranges = ranges;
   job->priv->num_page_ranges = n_ranges;
 }